EtherCat--主站开源的C语言库SOEM-环境搭建

2023-10-27

一、SOEM主站环境搭建
(一)安装VS;

(二)下载SOEM 1.3.1 源代码:链接地址 http://openethercatsociety.github.io/

(三)安装WinPcap_4_1_3.exe:链接地址 https://www.winpcap.org/install/default.htm

二、整体目录

(一)soem目录:实现主从站功能的主要文件和源文件(头文件和源文件)
ethercatbase.c : 基于ether功能函数,将数据封装成ethercat帧;
ethercatmain.c : ethercat的初始化,从站数据的读取;
定义ec_slave[],所有从站信息都在这个结构体内;
ethercatcoe.c : CoE模块,应用层CoE协议;
ethercatfoe.c : FoE模块;
ethercateoe.c : EoE模块(设置、获取IP函数,发送、接收以太网帧);
ethercatdc.c : EtherCat分布式时钟,实现主从站之间时针同步。

(二) osal/oshw目录:操作系统接口文件
oshw.c : 网卡管理模块;
nicdrv.c : EtherCat原始套接字驱动;
osal.c : 定时器,延时函数。

(三)test目录
运行一些demo程序,可以用wireshark工具监控ethercat帧。

三、SOEM主站环境搭建

(一)SOEM代码编译

(1)打开VS的命令行工具:x86 Native Tools Command Prompt for VS 2017

(2)进入解压的SOEM目录

cd/d E:\SOEM-1.3.1    

(3)编译lib(替换自己VS安装地址)

make_libsoem_lib.bat "D:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC" x86

 (4)生成全部测试文件

make_test_win32_all.bat "D:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC" x86

 生成全部测试文件(生成exe等文件)simple_test.exe文件,至此完成了SOEM源码的编译。

(二)获取当前网络设备

EtherCAT从站板配置好上电,通过网线连接至电脑。

(1)进入到SOEM-1.3.1\test\win32\simple_test目录。

cd test\win32\simple_test\

(2)网络设备列表获取

  方法一:直接运行simple_test,得到当前网络设备;

由于电脑可能有多个网络设备(无线、有线、虚拟网络等),可能不好判断实际网络设备。

simple_test

  方法二:通过WinPcap来获取设备列表。(使用方法一可直接跳过

    winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。Winpcap提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植,方便程序员进行开发。

  1.下载并安装WinPcap运行库:http://www.winpcap.org/install/default.htm

  2.下载WinPcap开发包:http://www.winpcap.org/devel.htm

  3.新建一个空项目。以管理员的权限打开VS2017,新建一个VC++的Win32控制台应用程序,设置为空项目。

   4.添加wpcap.lib和ws2_32.lib两个库。

   5.设置项目。打开项目属性,如图,添加WPCAP和HAVE_REMOTE这两个宏定义。

   6.添加包含路径(Include和Lib目录)包含目录和库目录。(上面下载的WinPcap开发包)

   7.设置UAC。(非必须,推荐设置,让生成的程序能够自主触发管理员权限对话框。无论如何,最终生成的程序都需要以管理员权限运行)

  8.直接运行可能会出现,“const char * 与char * 不兼容” 的问题。

 9.完成上述步骤后,向项目添加需要的源文件即可。

注意:此处配置的为x64,否则会出现“找不到pcap.h”的情况。由于开发winpcap项目的目的在于为win32应用程序提供访问网络底层的能力,因此开发包里面有大量的WIN32的标识符,直接使用会出现“未定以标识符”错误。

拷贝文件后,运行跳出窗口 显示网络设备列表。

#define WIN32
#include <iostream>
#include "pcap.h"
#pragma comment(lib,"wpcap")

using namespace std;

int  main()
{
    pcap_if_t* alldevs;
    pcap_if_t* d;
    char errbuf[PCAP_ERRBUF_SIZE];
    //获取设备列表
    if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
    {
        cout << "Error in pacp_findalldevs_ex:" << errbuf << endl;
        return -1;
    }
    int i = 0;
    for (d = alldevs; d != NULL; d = d->next)
    {
        cout << endl;
        cout << i++ << " " << d->name << endl;
        if (d->description)
            cout << " <" << d->description << ">" << endl;
        else
            cout << " <No description>" << endl;
    }
    if (i == 0)
    {
        cout << "No interfaces found!" << endl;
        return -1;
    }

    pcap_freealldevs(alldevs);

    return 0;
}

(三)SOEM代码测试

(1)simple_test测试

运行simple_test.exe \Device\NPF_{XXXX},其中\Device\NPF_{XXXX}是电脑的网络设备符。

simple_test.exe \Device\NPF_{XXXX}

(2)simple_test测试结果

如果出现“No slave found!”则是没有连接从站控制器,所以并没有扫描到从站信息;

尝试重连EtherCat从站后,扫面结果"1 slaves found and configured."

 

参考文档:

EtherCat主站开源的C语言库SOEM说明

【SOEM主站】一、SOEM主站环境搭建及连接板子测试

EtherCAT-SOEM主站搭建-windows

VS配置Winpcap环境及获取设备列表

VS2019配置WinPcap开发

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EtherCat--主站开源的C语言库SOEM-环境搭建 的相关文章

随机推荐

  • 在设计BUCK分立电路中,电感该如何选择,需要注意哪些地方

    在Buck电路中 电感器是用于实现降压的核心元器件之一 通常情况下 选择合适的电感值可以提高电路的效率和稳定性 避免输出电压不稳定或者出现脉冲干扰等问题 选择电感大小需要考虑以下几个因素 输出电压和电流 电感值会影响到输出电压和电流的稳定性
  • Python程序设计选择题

    1 关于 Python 程序格式框架的描述 以下选项中错误的是 A Python语言的缩进可以采用Tab键实现 B Python单层缩进代码属于之前最邻近的一行非缩进代码 多层缩进代码根据缩进关 系决定所属范围 C 判断 循环 函数等语法形
  • android-apt plugin is incompatible with the Android Gradle plugin. Please use 'annotationProcessor'

    android apt plugin is incompatible with the Android Gradle plugin Please use annotationProcessor 分三步走 1 progect中类似于 clas
  • Mybatis查询 字段类型转换错误

    问题描述 Cannot convert string aaa to java sql Timestamp value nested exception is java sql SQLDataException Cannot convert
  • gauge自动化框架踩坑(六):关于csv

    一 语法 关于csv文件 官方文档只给出了语法 并没有举出实际的例子来说明 如何使用 语法
  • Error creating bean with name ‘userService‘: Unsatisfied dependency expressed through field‘userMap‘

    今天在做项目时遇到了idea报 Could not autowire No beans of UserMapper type found 的错误 记录以下解决过程 我的mapper注解使用的是 Mapper 在使用 Autowrited注解
  • Java校招面试经验汇总,看完直接跪服

    美团技术一面20分钟 晚7点 因为想到下周一才面试 我刚准备出去打个羽毛球 北京的电话就来了 面试官各种抱歉 说开会拖延了 1 自我介绍 说了很多遍了 很流畅捡重点介绍完 2 问我数据结构算法好不好 挺好的 其实心还是有点虚 不过最近刷了很
  • Android 录音功能无法正常使用

    具体现象 最近在做一个APP需要安装在智能手表上 有一个录音的功能 将开发的apk安装在手机和pad上面都能正常使用 录音文件也可以正常播放 但是安装到手表后 启动录音功能几秒钟录音文件就达几百兆 且录音文件不能够正常播放 通过调试信息也看
  • Python学习笔记(十九)————json相关

    目录 1 什么是json 2 json有什么用 3 json格式数据转化 4 Python数据和Json数据的相互转化 1 什么是json JSON 是一种轻量级的数据交互格式 可以按照 JSON 指定的格式去组织和封装数据 JSON 本质
  • Grafana 系列-统一展示-2-Prometheus 数据源

    系列文章 Grafana 系列文章 Grafana Prometheus 数据源 Grafana 提供了对 Prometheus 的内置支持 本文会介绍 Grafana Prometheus 也包括 Prometheus 的兼容实现 如 T
  • js保留有效数字

    JavaScript中数字保留有效数字位数的方法有三种 toFixed toExponential toPrecision 这三种方法都会把数字转成字符串 1 toFixed 根据小数点后的指定位数将数字转为字符串 不会使用指数计数法 2
  • 使用Vue手动封装树形控件组件

    提示 如果当下认为一件事很难做 那么不用犹豫直接做就OK 巨大的提升往往出现在反复的挣扎过后 跳出舒适圈 不断挑战自我 毕竟还年轻 因为已经完成了 索性就用上帝视角一次性把需要注意的东西都列出来 不怎么会循序渐进 原谅俺 1 需求整理 如上
  • 什么是过拟合和欠拟合

    今天突然被以前同学人问到什么是机器学习中的 过拟合 过拟合就是训练的时候效果很好损失函数值可以降得很低 但是到测试数据集的时候表现就不那么好了 就是过分依赖于现有训练数据集的特征造成的 可以加大数据集来进行训练 比如在图像领域可以通过拉伸旋
  • Fabric核心模块

    Fabric由五个核心模块组成的程序组 1 peer 主节点模块 负责存储区块链数据 运行维护链码 2 orderer 交易打包 排序模块 3 cryptogen 组织和证书生成模块 4 configtxgen 区块和交易生成模块 生成创始
  • Linux Clock

    http www wowotech net pm subsystem clk overview html Linux common clock framework 1 概述 http www wowotech net pm subsyste
  • 500 Request processing failed; nested exception is java.lang.NullPointerException

    类型 异常报告 消息 Request processing failed nested exception is java lang NullPointerException 描述 服务器遇到一个意外的情况 阻止它完成请求 报错原因 这种报
  • TensorFlow2 Fashion-MNIST图像分类(二)

    1 图像分类数据的标准化 本篇内容是 TensorFlow2 Fashion MNIST图像分类 一 的第二部分 请先阅读第一部分中的内容 上一部分内容最后提到 模型训练结果出现不拟合现象 主要原因就在于特征数据没有进行标准化处理 因此本部
  • Unity3d Animation动画详解。。。

    动画脚本 Animation Scripting Unity s 动画系统允许你创建一个漂亮的动画蒙皮角色 动画系统支持动画融合 混合 添加动画 步调周期时间同步 动画层 控制动画回放的所有方面 时间 速度 混合权重 每个顶点有1 2 4个
  • 机器学习之下游任务

    下游任务是该领域称为那些利用预训练模型或组件的监督学习任务
  • EtherCat--主站开源的C语言库SOEM-环境搭建

    一 SOEM主站环境搭建 一 安装VS 二 下载SOEM 1 3 1 源代码 链接地址 http openethercatsociety github io 三 安装WinPcap 4 1 3 exe 链接地址 https www winp