0

我有基于网络设备的 EK1101、EL6002、EL2034 模块。这些模块通过以太网电缆连接到 PC 以太网端口。我已经用一些应用程序测试了这些模块,它在我的电脑上运行良好。

EK1101 用作耦合器。它连接PC以太网端口和其他从模块(EL6002,EL2034,..)

EL6002 作为 RS232 通讯工作。EL2034 用作数字 I/O。同样,我们有超过 10 种不同的设备。这些模块同时与 EK1101 耦合器接口。

我如何实现为 Linux 驱动程序?并开始?我是修改现有的网络驱动程序还是从头开始新的驱动程序?我需要写什么类型的字符或网络驱动程序?如果它的字符驱动程序如何通过以太网端口传输数据?

4

1 回答 1

0

使用串行切片(EL6002),每个端口每次交换只能发送 22 个字节(每个方向)。在以 1kHz 更新的全串行带宽 (115k) 下,您将不会错过更新,而不会使发送器饿死和/或在接收器上丢失数据。如果这是一个问题,您可能需要声明对用于主控 EtherCAT 回路的以太网端口的独占控制权。这需要某种形式的 root 权限,否则总是有人会尝试通过端口发送数据包,从而影响您的时间。您没有提供有关您的应用程序或时序要求的太多细节,所以这对您来说可能并不重要。

我一直在使用 Etherlab IgH 开源堆栈,它需要 root 权限才能加载实现底层堆栈的内核模块。完成后,您可以将其他所有内容设置为在没有 root 权限的情况下从用户空间运行。

一旦您的应用程序获得对主堆栈的访问权,您就设置了一个数据交换域(TwinCat 称之为任务),您将拥有一个可用于监控 EtherCAT 帧数据的共享内存区域。您的应用程序负责决定何时发送和接收域更新。

于 2015-07-01T01:42:40.487 回答