首页 > 其他分享 >SOEM的simple_test代码分析

SOEM的simple_test代码分析

时间:2023-09-17 21:11:17浏览次数:34  
标签:simple EC ec test SOEM OP

安装soem

  1. 下载SOEM的源码,点击链接
  2. 下载windows下的插件,winpcap
  3. 安装winpcap,傻瓜式安装
  4. 解压代码包

windows下编译源代码

  1. 使用vs自带的make进行编译,我电脑安装有vs2022:
  2. 打开vs自带的环境控制台,切换到SOEM主站目录下
  3. 创建一个build目录,我们之后编译生成的文件放到这个目录
  4. 切换到build目录下,输入 cmake -G "NMake Makefiles" .., 生成makefile文件
  5. 输入nmake生成demo

源码分析

simple_test

  1. 网卡,ethercat适配器:ec_adapter
    有两个属性:name和desc,名字和描述。
    查看电脑所有的网卡,使用函数:ec_adaptert ec_find_adapters(void)
  2. Ethercat状态机检查:OSAL_THREAD_FUNC ecatcheck(void *lpParam),以线程运行该函数,处理ethercat状态错误的情况
  3. simple_test:EtherCAT简单测试函数
  4. ec_init: EtherCAT初始化,参数是对应的网卡描述
  5. ec_config_init:使用初始化表初始化从站,那就使用TRUE作为参数,其他情况使用FALSE,返回值是找到的从站数量
  6. ec_config_iomap:将所有的pdo映射放入一个缓冲区
  7. dc时钟配置:ec_configdc
  8. 状态请求:ec_statecheck ec_statecheck(0, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE * 4); 超时时间是微秒为单位,0表示所有从站,EC_STATE_SAFE_OP表示请求状态
  9. 设置从站状态,发送一次有效的pdo数据,设置周期任务,修改所有从站状态为OP:
  ec_slave[0].state = EC_STATE_OPERATIONAL;
  /* send one valid process data to make outputs in slaves happy*/
  ec_send_processdata();
  ec_receive_processdata(EC_TIMEOUTRET);

  /* start RT thread as periodic MM timer */
  mmResult = timeSetEvent(1, 0, RTthread, 0, TIME_PERIODIC);

  /* request OP state for all slaves */
  ec_writestate(0);
  1. 从站状态的读取:ec_readstate()
  2. 定时器关闭:timeKillEvent(mmResult),mmResult是timeSetEvent的返回值
  3. 修改从站的状态:ec_writestate(slave_id),如果slave_id是0,就表示所有的从站
  4. 关闭主站的socket:ec_close();

标签:simple,EC,ec,test,SOEM,OP
From: https://www.cnblogs.com/joke-dream/p/17708674.html

相关文章

  • pytest---fixture知识总结
    此博客内容全部来源于:https://zhuanlan.zhihu.com/p/443523226前言在做自动化的过程中,编写用例时候需要用到用例的前置和用例的后置,其中pytest中有setup_class和teardown_class可以帮助我们完成这些,但是不够完善而且灵活性不够强。举个简单的例子,一个calss中有3条用例,其中2......
  • 2018-2019 ACM-ICPC Brazil Subregional Programming Contest
    B.Marbles题解显然如果存在棋子位于\((x,x)\),那么一定先手必胜容易发现必败态位于\((1,2)\)和\((2,1)\),那么我们可以通过\(sg\)函数暴力打表得到并且玩家一定不会将棋子移动至\((0,i),(i,0),(i,i)\)这三种情况上,因为谁移动到这些位置,对手一定处于必胜态intn,f[N][......
  • XMind2TestCase安装问题
     安装完成了XMind2TestCase之后,在命令端检查安装是否成功,报错:C:\Users\Administrator>xmind2testcaseTraceback(mostrecentcalllast): File"C:\Softwares\Python\Scripts\xmind2testcase-script.py",line33,in<module> sys.exit(load_entry_point('......
  • 2020-2021 ACM-ICPC Brazil Subregional Programming Contest
    A.StickerAlbum你想要得到\(n\)张贴纸,每包礼物中等概率出现\([A,B]\)范围内数量的贴纸,求需要买多少包礼物才能至少获得\(n\)张贴纸的期望次数\(1\leqn\leq10^6,0\leqA,B\leq10^6\)题解:期望DP我们考虑从后往前进行\(dp\)设计状态为\(dp[i]\)代表手上有\(i\)张......
  • 2022 International Collegiate Programming Contest, Jinan Site MKAEDGC
    2022InternationalCollegiateProgrammingContest,JinanSite目录2022InternationalCollegiateProgrammingContest,JinanSiteVP概况M-BestCarryPlayerK-StackSortA-TowerE-IdenticalParityD-FrozenScoreboardG-QuickSortC-DFSOrder2VP概况没......
  • m基于uw导频序列和cordic算法的基带数据帧频偏估计和补偿FPGA实现,包含testbench
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,测试结果如下:我们可以看到,带有频偏的基带信号o_I_fre和o_Q_fre得到了有效的频偏补偿,其补偿后的数据o_Ir和o_Qr和原始的基带数据基本一致。2.算法涉及理论知识概要基带数据帧频偏估计和补偿是一种用于纠正数字通信系统中......
  • m基于uw导频序列和cordic算法的基带数据帧频偏估计和补偿FPGA实现,包含testbench
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,测试结果如下:          我们可以看到,带有频偏的基带信号o_I_fre和o_Q_fre得到了有效的频偏补偿,其补偿后的数据o_Ir和o_Qr和原始的基带数据基本一致。 2.算法涉及理论知识概要     基带数据帧频偏估计......
  • 2022 China Collegiate Programming Contest (CCPC) Mianyang Onsite (2022CCPC绵阳)ACG
    2022ChinaCollegiateProgrammingContest(CCPC)MianyangOnsite(2022CCPC绵阳)ACGHMhttps://codeforces.com/gym/104065昨天女队vp了一下,赛时4题223罚时A是一个dp,学妹已经写的差不多了,就是转移方向错了(给点时间应该能d出来)牛的牛的。我就看了点签到,又是作为蟑螂乱爬的一天......
  • 《The 2023 Guangdong Provincial Collegiate Programming Contest》vp记录
    队伍配置:\(Shui\_dream\)\(gaosichensb\)和我这个菜鸡。膜拜另外两个大佬赛况:\(PS:\)看高二的在那边打感觉挺有趣的我们也跑过来打了。首先我把\(A\)签到题给签了,然后去看\(D\),\(gsc\)去看\(C\),这时候\(lyq\)大佬还没有加入战场,还在调自己的题,不过问题不大。我......
  • AtCoder Grand Contest 063
    PrefaceAGC好难啊,这场补完最近就没啥比赛好补了,接下来去训练下专题吧像C题这种美妙的人类智慧题感觉以我的脑子一辈子也想不出来wwwA-MexGame对于任意一段前缀,我们可以求出对应的每个人的操作次数以及每个人拥有的位置数考虑Alice的最优策略一定是从小到大地放入Bob对应......