首页 > 其他分享 >米尔基于瑞萨RZ/G2L开发板在工控领域的应用-基于SOEM的EtherCAT主站

米尔基于瑞萨RZ/G2L开发板在工控领域的应用-基于SOEM的EtherCAT主站

时间:2023-08-24 18:23:08浏览次数:42  
标签:基于 cmake -- EtherCAT 主站 simple CMakeFiles soem dir

本篇测评由优秀测评者“qinyunti”提供。


前言

本文介绍【米尔MYD-YG2LX开发板】在工控领域的应用,实现基于SOEM的EtherCAT主站。开发环境基于WSL2。

 

下载代码

git clone ‍https://github.com/OpenEtherCATsociety/SOEM‍

 

PC端

编译

cd SOEM/export CC=gccmkdir build_pccd build_pc/ 

cmake ..

lhj@lhj:~/SOEM/build_pc$ cmake ..
-- The C compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- OS is linux
-- LIB_DIR: lib
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lhj/SOEM/build_pc
lhj@lhj:~/SOEM/build_pc$

 

make

lhj@lhj:~/SOEM/build_pc$ make
Scanning dependencies of target soem
[  4%] Building C object CMakeFiles/soem.dir/soem/ethercatbase.c.o
[  9%] Building C object CMakeFiles/soem.dir/soem/ethercatcoe.c.o
[ 14%] Building C object CMakeFiles/soem.dir/soem/ethercatconfig.c.o
[ 19%] Building C object CMakeFiles/soem.dir/soem/ethercatdc.c.o
[ 23%] Building C object CMakeFiles/soem.dir/soem/ethercateoe.c.o
[ 28%] Building C object CMakeFiles/soem.dir/soem/ethercatfoe.c.o
[ 33%] Building C object CMakeFiles/soem.dir/soem/ethercatmain.c.o
[ 38%] Building C object CMakeFiles/soem.dir/soem/ethercatprint.c.o
[ 42%] Building C object CMakeFiles/soem.dir/soem/ethercatsoe.c.o
[ 47%] Building C object CMakeFiles/soem.dir/osal/linux/osal.c.o
[ 52%] Building C object CMakeFiles/soem.dir/oshw/linux/nicdrv.c.o
[ 57%] Building C object CMakeFiles/soem.dir/oshw/linux/oshw.c.o
[ 61%] Linking C static library libsoem.a
[ 61%] Built target soem
Scanning dependencies of target simple_ng
[ 66%] Building C object test/simple_ng/CMakeFiles/simple_ng.dir/simple_ng.c.o
[ 71%] Linking C executable simple_ng
[ 71%] Built target simple_ng
Scanning dependencies of target slaveinfo
[ 76%] Building C object test/linux/slaveinfo/CMakeFiles/slaveinfo.dir/slaveinfo.c.o
[ 80%] Linking C executable slaveinfo
[ 80%] Built target slaveinfo
Scanning dependencies of target eepromtool
[ 85%] Building C object test/linux/eepromtool/CMakeFiles/eepromtool.dir/eepromtool.c.o
[ 90%] Linking C executable eepromtool
[ 90%] Built target eepromtool
Scanning dependencies of target simple_test
[ 95%] Building C object test/linux/simple_test/CMakeFiles/simple_test.dir/simple_test.c.o
[100%] Linking C executable simple_test
[100%] Built target simple_test
lhj@lhj:~/SOEM/build_pc$

 

部署

生成的文件如下

其中libsoem.a为库文件

test/linux/下的

simple_test,slaveinfo,eepromtool为测试Demo。

lhj@lhj:~/SOEM/build_pc$ tree .
.
|-- CMakeCache.txt
|-- CMakeFiles
|   |-- 3.16.3
|   |   |-- CMakeCCompiler.cmake
|   |   |-- CMakeDetermineCompilerABI_C.bin
|   |   |-- CMakeSystem.cmake
|   |   `-- CompilerIdC
|   |       |-- CMakeCCompilerId.c
|   |       |-- a.out
|   |       `-- tmp
|   |-- CMakeDirectoryInformation.cmake
|   |-- CMakeOutput.log
|   |-- CMakeTmp
|   |-- Export
|   |   `-- share
|   |       `-- soem
|   |           `-- cmake
|   |               |-- soemConfig-noconfig.cmake
|   |               `-- soemConfig.cmake
|   |-- Makefile.cmake
|   |-- Makefile2
|   |-- TargetDirectories.txt
|   |-- cmake.check_cache
|   |-- progress.marks
|   `-- soem.dir
|       |-- C.includecache
|       |-- DependInfo.cmake
|       |-- build.make
|       |-- cmake_clean.cmake
|       |-- cmake_clean_target.cmake
|       |-- depend.internal
|       |-- depend.make
|       |-- flags.make
|       |-- link.txt
|       |-- osal
|       |   `-- linux
|       |       `-- osal.c.o
|       |-- oshw
|       |   `-- linux
|       |       |-- nicdrv.c.o
|       |       `-- oshw.c.o
|       |-- progress.make
|       `-- soem
|           |-- ethercatbase.c.o
|           |-- ethercatcoe.c.o
|           |-- ethercatconfig.c.o
|           |-- ethercatdc.c.o
|           |-- ethercateoe.c.o
|           |-- ethercatfoe.c.o
|           |-- ethercatmain.c.o
|           |-- ethercatprint.c.o
|           `-- ethercatsoe.c.o
|-- Makefile
|-- cmake_install.cmake
|-- libsoem.a
`-- test
 |-- linux
 |   |-- eepromtool
 |   |   |-- CMakeFiles
 |   |   |   |-- CMakeDirectoryInformation.cmake
 |   |   |   |-- eepromtool.dir
 |   |   |   |   |-- C.includecache
 |   |   |   |   |-- DependInfo.cmake
 |   |   |   |   |-- build.make
 |   |   |   |   |-- cmake_clean.cmake
 |   |   |   |   |-- depend.internal
 |   |   |   |   |-- depend.make
 |   |   |   |   |-- eepromtool.c.o
 |   |   |   |   |-- flags.make
 |   |   |   |   |-- link.txt
 |   |   |   |   `-- progress.make
 |   |   |   `-- progress.marks
 |   |   |-- Makefile
 |   |   |-- cmake_install.cmake
 |   |   `-- eepromtool
 |   |-- simple_test
 |   |   |-- CMakeFiles
 |   |   |   |-- CMakeDirectoryInformation.cmake
 |   |   |   |-- progress.marks
 |   |   |   `-- simple_test.dir
 |   |   |       |-- C.includecache
 |   |   |       |-- DependInfo.cmake
 |   |   |       |-- build.make
 |   |   |       |-- cmake_clean.cmake
 |   |   |       |-- depend.internal
 |   |   |       |-- depend.make
 |   |   |       |-- flags.make
 |   |   |       |-- link.txt
 |   |   |       |-- progress.make
 |   |   |       `-- simple_test.c.o
 |   |   |-- Makefile
 |   |   |-- cmake_install.cmake
 |   |   `-- simple_test
 |   `-- slaveinfo
 |       |-- CMakeFiles
 |       |   |-- CMakeDirectoryInformation.cmake
 |       |   |-- progress.marks
 |       |   `-- slaveinfo.dir
 |       |       |-- C.includecache
 |       |       |-- DependInfo.cmake
 |       |       |-- build.make
 |       |       |-- cmake_clean.cmake
 |       |       |-- depend.internal
 |       |       |-- depend.make
 |       |       |-- flags.make
 |       |       |-- link.txt
 |       |       |-- progress.make
 |       |       `-- slaveinfo.c.o
 |       |-- Makefile
 |       |-- cmake_install.cmake
 |       `-- slaveinfo
 `-- simple_ng
 |-- CMakeFiles
 |   |-- CMakeDirectoryInformation.cmake
 |   |-- progress.marks
 |   `-- simple_ng.dir
 |       |-- C.includecache
 |       |-- DependInfo.cmake
 |       |-- build.make
 |       |-- cmake_clean.cmake
 |       |-- depend.internal
 |       |-- depend.make
 |       |-- flags.make
 |       |-- link.txt
 |       |-- progress.make
 |       `-- simple_ng.c.o
 |-- Makefile
 |-- cmake_install.cmake
 `-- simple_ng
29 directories, 100 files
lhj@lhj:~/SOEM/build_pc$

 

 

 

开发板端

 编译

cd SOEM/

export CC=aarch64-linux-gnu-gcc

mkdir build 

 

cd build/ 

 

cmake ..

lhj@lhj:~/SOEM/build$ cmake ..
-- The C compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- OS is linux
-- LIB_DIR: lib
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lhj/SOEM/build
lhj@lhj:~/SOEM/build$

 

make

lhj@lhj:~/SOEM/build$ make
Scanning dependencies of target soem
[  4%] Building C object CMakeFiles/soem.dir/soem/ethercatbase.c.o
[  9%] Building C object CMakeFiles/soem.dir/soem/ethercatcoe.c.o
[ 14%] Building C object CMakeFiles/soem.dir/soem/ethercatconfig.c.o
[ 19%] Building C object CMakeFiles/soem.dir/soem/ethercatdc.c.o
[ 23%] Building C object CMakeFiles/soem.dir/soem/ethercateoe.c.o
[ 28%] Building C object CMakeFiles/soem.dir/soem/ethercatfoe.c.o
[ 33%] Building C object CMakeFiles/soem.dir/soem/ethercatmain.c.o
[ 38%] Building C object CMakeFiles/soem.dir/soem/ethercatprint.c.o
[ 42%] Building C object CMakeFiles/soem.dir/soem/ethercatsoe.c.o
[ 47%] Building C object CMakeFiles/soem.dir/osal/linux/osal.c.o
[ 52%] Building C object CMakeFiles/soem.dir/oshw/linux/nicdrv.c.o
[ 57%] Building C object CMakeFiles/soem.dir/oshw/linux/oshw.c.o
[ 61%] Linking C static library libsoem.a
[ 61%] Built target soem
Scanning dependencies of target simple_ng
[ 66%] Building C object test/simple_ng/CMakeFiles/simple_ng.dir/simple_ng.c.o
[ 71%] Linking C executable simple_ng
[ 71%] Built target simple_ng
Scanning dependencies of target slaveinfo
[ 76%] Building C object test/linux/slaveinfo/CMakeFiles/slaveinfo.dir/slaveinfo.c.o
[ 80%] Linking C executable slaveinfo
[ 80%] Built target slaveinfo
Scanning dependencies of target eepromtool
[ 85%] Building C object test/linux/eepromtool/CMakeFiles/eepromtool.dir/eepromtool.c.o
[ 90%] Linking C executable eepromtool
[ 90%] Built target eepromtool
Scanning dependencies of target simple_test
[ 95%] Building C object test/linux/simple_test/CMakeFiles/simple_test.dir/simple_test.c.o
[100%] Linking C executable simple_test
[100%] Built target simple_test
lhj@lhj:~/SOEM/build$

 

部署

cp libsoem.a /mnt/d

cp test/linux/simple_test/simple_test /mnt/d

cp test/linux/slaveinfo/slaveinfo  /mnt/d

将上述文件rz导入开发板

chmod +x simple_test slaveinfo

 

运行
root@myir-yg2lx:~# ./slaveinfo eth0
SOEM (Simple Open EtherCAT Master)
Slaveinfo
Starting slaveinfo
ec_init on eth0 succeeded.
No slaves found!
End slaveinfo, close socket
End program
root@myir-yg2lx:~# ./simple_test eth0
SOEM (Simple Open EtherCAT Master)
Simple test
Starting simple test
ec_init on eth0 succeeded.
No slaves found!
End simple test, close socket
End program
root@myir-yg2lx:~#

 

总结

本开发板接口资源丰富,性能强,特别适合工控领域的应用,比如作为EtherCAT主站。由于没有从站,所以暂时未能演示和从站通讯的功能。

 

标签:基于,cmake,--,EtherCAT,主站,simple,CMakeFiles,soem,dir
From: https://www.cnblogs.com/cbd7788/p/17654876.html

相关文章

  • 基于PCA的最小包围盒
    参考文章:http://t.csdn.cn/LK1RZhttp://t.csdn.cn/DEhQChttp://t.csdn.cn/2LKWVhttp://t.csdn.cn/AGicghttp://t.csdn.cn/9Vqk6下面基于PCA的最小包围盒的代码是一样的,都是参考上述博客。引用代码:#include<vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL)......
  • 【知识整理】基于Springboot的Kafka消费者动态操作
    基于Springboot的Kafka消费者动态操作1.问题​ 在基于Springboot开发Kafka相关业务时,遇到如下业务场景:执行部分操作时,如停止服务替换镜像、执行特殊业务处理等,需要先停止Consumer接收Kafka消息,待处理完成后再开启Consumer接续接收Kafka消息为并发消费Kafka消息,可通过配置sp......
  • 基于静态编译构建微服务应用
    作者:饶子昊(铖朴)Java的局限性传统的一个Java应用从代码编写到启动运行大致可以分为如下步骤:首先,编写.java源代码程序。然后,借助javac工具将.java文件翻译为.class的字节码,字节码是Java中非常重要的内容之一,正是因为它的出现,Java才实现对底层环境的屏蔽,达到Writ......
  • 架构:第七章:基于Dubbo+Zookeeper项目架构
    Dubbo:简单的介绍一下Dubbo?(Dubbo是什么)dubbo就是个服务调用的东东。为什么怎么说呢?因为Dubbo是由阿里开源的一个RPC分布式框架那么RPC是什么呢?就是不同的应用部署到不同的服务器上,应用之间想要调用没有办法直接调用,因为不在一个内存空间,需要通过网络通讯来调用,或者传达调......
  • 《asyncio 系列》1. 什么是 asyncio?如何基于单线程实现并发?事件循环又是怎么工作的?
    https://www.cnblogs.com/traditional/p/17357782.html楔子许多应用程序,尤其在当今的Web应用程序领域,严重依赖IO操作。这些类型的操作包括从Intermet下载网页的内容、通过网络与一组微服务进行通信,或者针对MySOL、Postgres等数据库同时运行多个查询。Web请求或与微服......
  • 【DBN回归预测】基于麻雀算法优化深度置信网络SSA-DBN实现数据回归多输出预测附matlab
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • PP-TS基于启发式搜索和集成方法的时序预测模型,使预测更加准确
    时间序列数据在各行业和领域中无处不在,如物联网传感器的测量结果、每小时的销售额业绩、金融领域的股票价格等等,都是时间序列数据的例子。时间序列预测就是运用历史的多维数据进行统计分析,推测出事物未来的发展趋势。为加快企业智能化转型进程,降低时序技术应用门槛,飞桨持续进行产品......
  • 基于Redission的分布式锁
    分布式锁的设计共分为3步定义注解对注解进行扫描使用注解加锁核心逻辑为RLockrLock=redissonClient.getLock(key);//是否加锁成功booleanisLock=rLock.tryLock(timeOut,expireTime,timeUnit);1.定义注解LockActionpackagecom.jwds.app.compont.cache.annotat......
  • 基于mysql的异步事件框架的设计&实现
    背景       事件驱动模型编程是程序设计中经常会用到的方法技巧,本质上是为了解耦事件的发布者和订阅者,实现组件之间的松耦合,提高应用程序的扩展性;另外,在一些业务场景中,顺序、阻塞式的执行任务会遇到一些比较耗时的中间步骤,但是往往我们不希望整个流程都停下来等待这些中间......
  • 基于机器视觉工具箱的车辆检测计数算法matlab仿真
    1.算法理论概述1.1、研究背景      随着城市化进程的加速和汽车保有量的增加,交通拥堵和交通事故等交通问题日益突出,如何对城市交通进行有效管理和调控成为了城市交通管理的重要任务。车辆检测计数是交通管理中的一个重要问题,它可以用于交通状况的监测、交通流量的统计以......