问题标签 [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.
embedded - TwinCAT 3 控制台消息显示
ADSLOGSTR(msgCtrlMask := ADSLOG_MSGTYPE_LOG, msgFmtStr := 'OSIO: %s', strArg := 'Autostrsys');
我在 TwinCAT 3 中使用这个函数,但是当我运行我的代码时,它因为 ADSLOGSTR 函数而被挂起。如果我对此发表评论,那么它工作正常,但在这种情况下,我无法看到消息。
为什么系统会因为这个消息显示功能(ADSLOGSTR)而挂起?
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 项目!
这是我所做的和输出:
driver - 使用 EtherType 0x88A4 (EtherCat) 时,WriteFile 函数 (NDIS) 中出现错误 87
我正在尝试使用 C 中 NDIS 驱动程序的prottest.c 示例代码在第 2 层上发送原始以太网帧。该示例可以正常工作,但是当我修改以太网类型(0x88A4 EtherCat)并使用必要的结构和信息,Writefile 函数总是返回错误 87(不正确的参数)。
如果没有 TCP/IP 堆栈,是否无法在第 2 层、Raw 中使用此函数编写此函数,可能有什么问题?
谢谢你的帮助。此致。
ethercat - 我们能否通过自定义以太网交换机中继 Ethercat 协议帧(满足延迟和抖动预期)
我正计划开发一个定制的高效以太网交换机,可以将我的 Ethercat 从站连接到主站。交换机不对 Ethercat 帧执行任何操作,只是将它们转发给主节点。交换机可以以 100 纳秒范围内的延迟中继帧。我是否需要为我的设备使用任何特定的 Ethercat 设备接口,或者我可以只使用普通的以太网接口进行此实现吗?这将只是作为从站和主站之间的连接器。不会对帧进行任何处理。这可以在不使用任何特定的 Ethercat 接口和普通的以太网交换逻辑的情况下完成吗?
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 限制为仅一个核心?
- 有没有人做过类似的事情?谁能指出一些方向?谢谢
c++ - 在 PC 上使用 SOEM 设置 EtherCat 主站
我正在尝试在我的 PC 上使用开源 SOEM 代码实现 EtherCat master。我有整个图书馆,但不知道如何使用它。它具有 simple_test 类,该类具有调用和使用 SOEM 的主要功能,但是任何人都可以帮助我如何在库中执行 simple_test.h 类。
提前谢谢了。
embedded - 在 SOEM(ethercat stack)上控制伺服电机
我现在正在学习控制事物。:) 我正在使用 SOEM,ethercat 堆栈。PC是我的主人,伺服电机是我的奴隶。我在那里学到了一些东西,但一直在移动伺服电机。我确保数据是从主机发送的,但由于某种原因,它没有到达从机,即伺服电机。这就是联系你们的原因。
我的简洁是它必须与同步管理器做一些事情,但作为一个学习者,我不确定。
此代码打印的状态是“608”。
有没有专家可以指导我接下来的步骤?为他们喝彩。
PS如果标签不合适,请更改/添加。
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。
这怎么可能?我不确定这是我问题的原因,但它肯定看起来很奇怪。此外,文档似乎与我使用的运行时版本不是最新的,我相信它是最新的。
我希望有人有一些建议,如果您需要进一步澄清,我会提供更多细节。
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 文件放在同一个项目中,它们就可以相互包含。
c++ - 构建c++程序后的Ethercat通信缺陷
对于我的工作,我目前正在研究与 Beckhoff PLC 通信的现有系统 (C++)。该 PLC 读取过程的当前速度并控制灯。
该程序需要更新才能使用新的厚度测量。这种新测量的代码有效,我们在另一台计算机上对其进行了测试。
问题是 Beckhoff 和计算机之间的通信不再起作用。当我们重建(一部分)程序时,这个问题就开始了。为了检查出了什么问题,我们使用了wireshark来检查通信。
在下图中,您可以看到与 Beckhoff PLC(使用 Ethercat)的正确通信。
在这张图中,您可以看到我们构建新程序后的通信。
当然,我们测试了很多选项来消除这个问题,但目前我们想不出任何其他方法来恢复通信。
我们尝试过的事情:
- 编译旧代码,看看通信是否仍然有效。这行不通。只有原始的 .exe 文件有效。
- 返回几个版本以测试通信。这也行不通。
- 我们检查 Beckhoff PLC 的硬件配置和 MAC 地址。这都是正确的。
如果有人知道这个问题的解决方案,那就太好了。请不要犹豫,提出问题以获取有关该问题的更多信息。