问题标签 [ethercat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
169 浏览

embedded - TwinCAT 3 控制台消息显示

ADSLOGSTR(msgCtrlMask := ADSLOG_MSGTYPE_LOG, msgFmtStr := 'OSIO: %s', strArg := 'Autostrsys');

我在 TwinCAT 3 中使用这个函数,但是当我运行我的代码时,它因为 ADSLOGSTR 函数而被挂起。如果我对此发表评论,那么它工作正常,但在这种情况下,我无法看到消息。

为什么系统会因为这个消息显示功能(ADSLOGSTR)而挂起?

0 投票
2 回答
522 浏览

windows-subsystem-for-linux - WSL Ubuntu 18 上带有 SOEM 的 EtherCAT

有没有人尝试过在 WSL linux 中通过 SOEM 连接到 EtherCAT 设备?

当 TwinCAT 成功连接到我的 Maxon EPOS4 并使用 RT-Ethernet 中间驱动程序在 Windows 10 下移动我的笔记本电脑上的直流电机时,SOEM slaveinfo 返回在 WSL 下的 eth0 上找不到从站。

附言。我在笔记本电脑上使用以太网到 USB-C LAN 适配器,自动 IP 地址,安装 Hyper-V 的 WSL 2 上的 Ubuntu 18.04,并测试关闭我的 Windows 防火墙。由于编译问题,我还没有在 Windows 下使用 SOEM。最初,我在 eth0 问题上没有找到套接字,但在安装 hyper-V 并将我的 WSL 当前安装的 Ubuntu-18.04 升级到 WSL 2 后它解决了。

我在 WSL Ubuntu 20 下遇到同样的问题,当防火墙被停用时,如果我禁用所有 TwinCAT 服务并从以太网属性窗口卸载 TwinCAT 项目!

这是我所做的和输出:

0 投票
1 回答
60 浏览

driver - 使用 EtherType 0x88A4 (EtherCat) 时,WriteFile 函数 (NDIS) 中出现错误 87

我正在尝试使用 C 中 NDIS 驱动程序的prottest.c 示例代码在第 2 层上发送原始以太网帧。该示例可以正常工作,但是当我修改以太网类型(0x88A4 EtherCat)并使用必要的结构和信息,Writefile 函数总是返回错误 87(不正确的参数)。

如果没有 TCP/IP 堆栈,是否无法在第 2 层、Raw 中使用此函数编写此函数,可能有什么问题?

谢谢你的帮助。此致。

0 投票
1 回答
57 浏览

ethercat - 我们能否通过自定义以太网交换机中继 Ethercat 协议帧(满足延迟和抖动预期)

我正计划开发一个定制的高效以太网交换机,可以将我的 Ethercat 从站连接到主站。交换机不对 Ethercat 帧执行任何操作,只是将它们转发给主节点。交换机可以以 100 纳秒范围内的延迟中继帧。我是否需要为我的设备使用任何特定的 Ethercat 设备接口,或者我可以只使用普通的以太网接口进行此实现吗?这将只是作为从站和主站之间的连接器。不会对帧进行任何处理。这可以在不使用任何特定的 Ethercat 接口和普通的以太网交换逻辑的情况下完成吗?

0 投票
0 回答
94 浏览

linux - 在 1 个内核上运行 RTOS,在其他 SMP 内核上运行 Linux?

假设我们有一个 64 位 ARM 双核 CPU(系统双核)

我想在一个内核上运行一个裸 RTOS,并将其他内核分配给 Linux。通过这种方式,我运行了 BLDC 电机控制(使用片上 PWM 输出和 ADC 输入)

到目前为止,我会做到这一点:

  • 在 u-boot 和内核期间,将一个内核专用于 RTOS,其他内核用于 Linux
  • 并保留一个内存分区作为 Linux 用户空间设备,禁用缓存。
  • Linux 和 RTOS 通过共享内存交换信息
  • RTOS 控制 PWM 和 GPIO,读取 ADC,并可能运行 Ethercat 连接。

我的问题是:

  • 我是否需要将内存 IO 限制为仅一个核心?
  • 有没有人做过类似的事情?谁能指出一些方向?谢谢
0 投票
0 回答
83 浏览

c++ - 在 PC 上使用 SOEM 设置 EtherCat 主站

我正在尝试在我的 PC 上使用开源 SOEM 代码实现 EtherCat master。我有整个图书馆,但不知道如何使用它。它具有 simple_test 类,该类具有调用和使用 SOEM 的主要功能,但是任何人都可以帮助我如何在库中执行 simple_test.h 类。

提前谢谢了。

0 投票
0 回答
120 浏览

embedded - 在 SOEM(ethercat stack)上控制伺服电机

我现在正在学习控制事物。:) 我正在使用 SOEM,ethercat 堆栈。PC是我的主人,伺服电机是我的奴隶。我在那里学到了一些东西,但一直在移动伺服电机。我确保数据是从主机发送的,但由于某种原因,它没有到达从机,即伺服电机。这就是联系你们的原因。

我的简洁是它必须与同步管理器做一些事情,但作为一个学习者,我不确定。

此代码打印的状态是“608”。

有没有专家可以指导我接下来的步骤?为他们喝彩。

PS如果标签不合适,请更改/添加。

0 投票
1 回答
219 浏览

plc - Codesys Control RTE V3 - Ethercat 实时总线的网络适配器配置

我对 Codesys 平台还很陌生,在尝试将 Windows IPC 上的 RTE 用作目标设备时遇到了一些问题。

我正在使用具有以下运行时版本的 IPC(Windows 7 Embedded)-> CODESYS Control RTE V3 v3.5.17.0

我在笔记本电脑上运行 Codesys 环境(也是版本 v3.5.17.0),通过选择正确的目标 PLC 设备(CODESYS Control RTE V3 x64)连接到 IPC 运行时没有问题。

我在我的项目中添加了一个“Ethercat Master SoftMotion”设备,并分配了堆栈将在其中运行的相应 IEC 任务(Bus Cycle Task),并选择堆栈使用的 NIC,没有大问题。正如文档中所述-> https://help.codesys.com/webapp/_ecat_tutorial;product=core_EtherCAT_Configuration_Editor;version=4.1.0.0

当我登录并下载项目以便开始扫描网络以查找不同的 Ethercat 从站时,我收到以下消息:

  • [致命错误] 未解决的参考:'SYSETHERNETADAPTERCLOSE'
  • [致命错误] 未解决的参考:'GETNUMBEROFADAPTERS'
  • [致命错误] 未解决的参考:'GETADAPTERINFO'
  • [致命错误] 未解决的参考:'SYSETHERNETADAPTEROPEN'
  • [致命错误] 未解决的参考:'SYSETHERNETETHFRAMESEND'
  • [致命错误] 未解决的参考:'SYSETHERNETETHFRAMERECEIVE'
  • [致命错误] 未解决的参考:'SYSETHERNETFRAMERELEASE'
  • [致命错误] 未解决的参考:'GETIPETHFRAME'
  • [致命错误] 未解决的参考:'SYSETHERNETIPFRAMESEND'
  • [致命错误] 未解决的参考:'SYSETHERNETIPFRAMERECEIVE'

我也得到我的对话框,说明:

“下载时出错:10 个未解决的引用,0 个签名不匹配,0 个版本不匹配找到

硬件上的设备版本似乎与项目中使用的设备版本不同。尝试升级/降级项目中的设备以匹配硬件的实际版本。

请查看消息视图以获取更多详细信息”。

此错误消息似乎具有误导性,因为这是一个新安装环境中的新项目,其中 Codesys 开发和运行时都具有完全相同的版本,因此该项目是为正确版本的运行时创建的。


我看了一下手册,我必须选择正确的驱动程序-> https://help.codesys.com/webapp/_cds_rtev3_startup_cifx_hil;product=core_codesys_control;version=3.5.17.0

此时是我发现问题的时候:

  • 根据文档,我需要在我所做的 PLC 配置的组件管理器选项卡中添加 CmpHilscherCIFX 组件,然后重新启动 IPC。

  • 稍后,必须通过修改“CODESYSControl.cfg”文件来选择引导加载程序和正确的固件。这也是我在附件中看到的一个步骤,我只是添加了 Ethercat,根据我在“C:\Program Files\CODESYS\CODESYS Control RTE3\”中找到的“_cifX firmware.txt”选择 Ethercat 固件文件HilscherCIFX\固件":

应用这些更改后,我再次重新启动了 IPC。但是,我仍然收到此未解决的参考错误,我注意到“C:\Program Files\CODESYS\CODESYS Control RTE3\HilscherCIFX\Firmware”中没有任何 Ethercat 固件文件(cifxecm.nxf):


选择在 IPC 上运行 Ethercat 堆栈的 NIC 是 Intel I211,因此理论上支持 Chipset。

这怎么可能?我不确定这是我问题的原因,但它肯定看起来很奇怪。此外,文档似乎与我使用的运行时版本不是最新的,我相信它是最新的。

我希望有人有一些建议,如果您需要进一步澄清,我会提供更多细节。

0 投票
1 回答
51 浏览

c++ - 如何将具有 .c 和 .h 文件的现有项目转换为 Visual Studio 2019 中的动态链接库?

我正在使用简单的 Open EtherCAT Master (SOEM) https://github.com/OpenEtherCATsociety/SOEM。我想使用 SOEM 中的现有文件创建一个 .dll 动态链接库来构建其他项目。我尝试在 Visual Studio 中创建一个 DLL,然后将所有 .c 和 .h 文件从 SOEM 上传到 DLL。当我这样做时,某些头文件无法识别。特别是 OSAL 和 OSHW 头文件。我不确定这是否是头文件之间的一般问题,或者这是特定于 SOEM 文件的问题。我认为一旦将所有 .c 和 .h 文件放在同一个项目中,它们就可以相互包含。

0 投票
0 回答
33 浏览

c++ - 构建c++程序后的Ethercat通信缺陷

对于我的工作,我目前正在研究与 Beckhoff PLC 通信的现有系统 (C++)。该 PLC 读取过程的当前速度并控制灯。

该程序需要更新才能使用新的厚度测量。这种新测量的代码有效,我们在另一台计算机上对其进行了测试。

问题是 Beckhoff 和计算机之间的通信不再起作用。当我们重建(一部分)程序时,这个问题就开始了。为了检查出了什么问题,我们使用了wireshark来检查通信。

在下图中,您可以看到与 Beckhoff PLC(使用 Ethercat)的正确通信。

正确的沟通

在这张图中,您可以看到我们构建新程序后的通信。

建立通讯后

当然,我们测试了很多选项来消除这个问题,但目前我们想不出任何其他方法来恢复通信。

我们尝试过的事情:

  • 编译旧代码,看看通信是否仍然有效。这行不通。只有原始的 .exe 文件有效。
  • 返回几个版本以测试通信。这也行不通。
  • 我们检查 Beckhoff PLC 的硬件配置和 MAC 地址。这都是正确的。

如果有人知道这个问题的解决方案,那就太好了。请不要犹豫,提出问题以获取有关该问题的更多信息。