器件型号: AM261-EVM-EVM SOM
您好、
我目前正在上从事 EtherNet/IP 工作 AM261-LP 消息流 IND_COMMS_SDK_am261x_2025_00_07 。 我正在使用 hilsher EtherNet/IP 工具 AS (PLC/MASTER)。 我有以下几个问题:
-
配置装配体
-
自定义服务
-
怠速/运行收割台处理
我希望澄清以下几点。
主题 1 — 配置参数
Q1–如何从工程工具触发配置装配体?
我怎么会这样呢 配置组件 以触发配置回调?
目前、要执行回调、我临时将(在连接路径中)输出程序集 (0x65)(通用设备示例的)替换为配置程序集(我创建的:ID:0x28)。 这是有效的、但我认为这不是正确的方法。
什么是正确的方法:
-
配置器件、使该工具发送配置数据?
-
确保在 ForwardOpen 请求期间触发了配置回调?
Q2–装配体成员自定义映射行为
对于每个配置参数:
-
我打电话
EI_API_CIP_addAssemblyMemberCustomMapped() -
启动
assembCustomMapCfg.assemblyMemberLength出现问题 -
已注册 a 设置回调
我的期望:
-
应根据配置参数触发回调。
观察到的行为:
-
该回调只调用一次
-
属性 ID 对应于第一个注册属性
为什么没有根据配置参数单独触发回调?
是否将配置程序集作为单个块处理、而不是按成员处理? 这样用户就有责任解析它?
Q3–o2t_pt2o_p配置回调中和的含义
关于此堆栈回调:
typedef uint32_t(*EI_API_CIP_CBCfgAssemblySimple)(
EI_API_CIP_NODE_T* pCipNode_p,
uint16_t o2t_p,
uint16_t t2o_p,
uint16_t cfg_inst_p,
const uint8_t* const cfg_data,
uint16_t cfg_data_size
);
以下的确切含义是什么:
-
o2t_p -
t2o_p
它们代表什么信息?
准确解释它们所代表的内容将会有所帮助。
主题 2–定制服务
Q1–栈回调与用户回调
实施自定义服务时:
-
而设计的 堆栈回调 触发的
-
。 用户回调 从不调用
为什么会发生这种情况?
是否存在可能缺失的必需注册步骤?
这是否与堆栈内的类/服务所有权有关?
主题 3–汇编空闲/运行标头
Q1–适用性
是空闲/运行标头:
-
仅适用于输出 (O→T) 组件?
-
还是用于输入 (T→O) 组件?
Q2–更改运行→空闲状态
如何从 Hilsher 工具更改 Idle/Run 标头值 (Run→Idle)?
Q3–轮询模式+空闲/运行接头
对于循环数据、我使用轮询(无回调)。
若要读取汇编数据、我使用:
EI_API_CIP_getAssemblyData()
观察结果:
-
该 API 只接受循环 I/O 大小(没有 4 字节空闲/运行标头)。
-
它不允许使用更大的缓冲区(包括标头)。
-
我的输出程序集只有 1 个字节。
-
但是、返回值
pDestinationBuffer_p[0]() 总是1、即使我使用 Hilscher 工具发送了不同的值。
问题:
-
使用轮询时如何检索 Idle/Run 标头值?
-
报头是否由堆栈在内部移除?
-
常量返回值
1() 是否对应于运行状态而不是实际的循环数据?