目前,我正试图捕获通过一个名为EtherCAT的程序发送和接收的TwinCAT数据包。TwinCAT是Windows环境下EtherCAT通信的实时控制软件.这个程序用于每4ms与奴隶通信。
顺便说一下,我捕获了数据包,并注意到在分析过程中数据并不是连续的。因此,我插入了代码来检查捕获数据包的部分的时间差,并确认一些数据包比前一个数据包晚了20 in。
因为我可以在TwinCAT XAE工具中检查丢失的帧,我不认为数据包实际上是丢失的,我认为我的程序有一个问题。
下面是我的密码。
public class EtherCATPacketCaptureService
{
private c
我正在工作的芯片,应该是一个功能,作为一个可编程控制器(主控)通过一个EtherCAT连接。该芯片包括一个Atmega2560和一个LAN9252,它是EtherCAT从控制器。
我已经编写了xml文件。通过在奴隶上闪烁这个ESI,我面临以下问题:
奴隶在PLC的Config模式下工作(基于它的工作方式)。数据从从发送到主从,也从主从接收到从。但是,通过启动运行模式,我得到以下错误和警告:
810 ms | 'TcSysSrv' (10000): Sending ams command >> Init16\IO: Set State TComObj SAFEOP O
CANopen是点对点通信,而EtherCAT是基于总线的。点对点意味着会有节点地址。但这在EtherCAT中是多余的。因此,我想知道这个节点地址字节是如何在CANopen over EtherCAT中处理的。我试着搜索信息,但没有找到任何具体的信息。
另外,我假设CANopen设备的循环数据和非循环数据只能通过EtherCAT循环发送,因为它是主触发的循环传输协议。这基本上意味着我不能在事件触发时在EtherCAT上发送异步事件触发的信息(这是基于CAN优先级的违反直觉的信息,因为它们都有相同的优先级)。如果我做错了,请纠正我。另外,请告诉我如何使较高优先级的字节比低优先级的
我正在尝试找出,通过写入CANopen对象字典中的存储索引1010.01,我可以存储当前配置的状态是什么。我尝试在预操作状态下执行此操作,但得到以下错误
Time: 2914.034 SDO slave:1 index:1010.01 error:08000022 Data cannot be transferred or stored to the application because of the present device state
uint32_t store_password = 0x65766173;
ret = ec_SDOwrite(slave, 0x1010,
我们有一个耦合器,它目前由一些c#代码控制,我们从EtherCAT脚本中调用该c#代码。我们希望将在耦合器上切换插槽的整个过程移到powershell脚本中,但我不确定如何做到这一点。如果你能为我提供关于如何在powershell中发送/接收Modbus命令的信息,那将是非常有帮助的。
谢谢!
编辑:以下是在C#中用来切换IO耦合器的一个插槽的代码:
using System.Net.Sockets;
using Modbus.Device;
TcpClient tcp_connection = new TcpClient(ip, MODBUS_TCP_PORT);
ModbusIpMast
我的Java应用程序应该控制一个外部设备(EtherCAT总线技术),它直接连接到我的计算机的网络接口(Ubuntu)。没有其他网络设备连接。这种通信是在没有IP栈的标准IEEE 802.3以太网帧上完成的。
发送数据的示例:
int etherType = 0x88A4; // the EtherType registered by IEEE
byte[] macBroadcast = new byte[] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
byte[] macSource = new byte[] ... ; // MAC Address o
我已经构建了一个代码,它创建了一个弹出式窗口和一个下拉选择器。效果很好。问题来自试图将用户从html文件中选择的内容传递回一个不同的函数作为参数。
传回只会在记录器中返回"null“。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<span>Select your most perferred remote control comms. protocol from the