主题中讨论的其他器件:AM2432
您好、
我们将 AM2432 EtherNet/IP 解决方案与 ind_comms_sdk_am243x_09_01_00_03 SDK 配合使用。
我们需要在 EtherNet/IP 适配器上添加500个实例。
我们使用 EI_API_CIP_createInstance 来添加实例、但我们获得了错误代码0x38020104 (词典已满)。
可以在 EtherNet/IP 堆栈中添加多少个实例?
我们可以扩展最大值的数量吗?
谢谢。
约书亚
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、
我们将 AM2432 EtherNet/IP 解决方案与 ind_comms_sdk_am243x_09_01_00_03 SDK 配合使用。
我们需要在 EtherNet/IP 适配器上添加500个实例。
我们使用 EI_API_CIP_createInstance 来添加实例、但我们获得了错误代码0x38020104 (词典已满)。
可以在 EtherNet/IP 堆栈中添加多少个实例?
我们可以扩展最大值的数量吗?
谢谢。
约书亚
如您所说、此问题的原因是内存空间或 EtherNet/IP 堆栈的限制。
您能否提供规格?
[/报价]您正在查看哪种规格。 此外、您能否说明一下我们可以在 CCB 中使用此功能的理由? 我们没有经常看到这一请求。 一旦我们收到您的一些信息、我们还需要评估此功能的使用情况。
尊敬的 Nilabh:
最多255个实例 对我们来说是不够的。
我们有500个参数、需要以 EtherNet/IP 适配器为例进行添加。
----------------
我们 需要关于类/实例/ 属性的 Kunbus 堆栈规范。
-最大类数/最小类 ID /最大类 ID
-最大实例数/最小实例 ID /最大实例 ID
-最大 属性数/最小 属性 ID /最大 属性 ID
----------------
EtherNet/IP 设备的大多数参数都可通过 EtherNet/IP 适配器访问。
对于 EtherNet/IP 设备、500参数不是一个大数字。
请帮助我们解决该问题。
谢谢。
约书亚
你好、Joshua、
下面是我从专家那里得到的答案。
最大实例数可以从255增加到更高的16位数。
需要更改 EI_API_CIP_OBD_MAX 宏并增加值(EI_API_def.h 文件)
执行此操作时、需要考虑以下事项
1. EtherNet/IP 适配器已使用由堆栈内部创建的多个实例和类(大约20个)。
2.应用程序也在创建一些类和实例(基于应用程序)。
3.每个创建类调用都已经有1个实例(索引为0)。
这意味着:
EI_API_CIP_OBD_MAX =内部栈类/实例(20)+应用现有类/实例(基于应用)+您所需的新类/实例数量(500)
最大类别数: EI_API_CIP_OBD_MAX -所有实例的数量
最大实例编号: EI_API_CIP_OBD_MAX -所有 类别的数量
最大属性数:无限制的16位数
您需要注意内存限制、因为类/实例和属性是由在内部内存中运行的栈分配的。
此致、
普拉吉特
您好, Prajith,
我从 EI_API_CIP_createClass 函数获得了0x38020104 (EI_API_CIP_eERR_DIONAL_FULL)。
是否有任何可以获取我现在添加的实例数的变量?
我还尝试注释 EI_API_CIP_OBD_MAX 的定义、但工程仍然可以成功构建。
似乎 在项目中没有使用 EI_API_CIP_OBD_MAX。
谢谢。
约书亚
你好、Joshua、
AM243x 上的内部存储器限制为2MB。 如果存储器使用量达到此限制、则可能需要使用 DDR 存储器。
可以在以太网 IP 数据表的"General Stack Parameters"部分下找到堆栈内存使用情况。
对于工业通信 SDK v 9.1,您可以参考以下数据表链接并检查堆栈内存使用情况: https://software-dl.ti.com/processor-industrial-sw/esd/ind_comms_sdk/am243x/09_01_00_03/docs/am243x/ethernetip_adapter/eip_datasheet.html
此致
归档开发
您好、 Archit、
感谢您的答复。
我们是否有任何方法可以监控内部内存的内存使用情况?
谢谢。
约书亚
你好、Joshua、
对于静态分配的存储器、您可以参阅链接器命令文件。
为了监视堆存储器并获取其他运行时详细信息、您可以使用 CCS IDE 中的实时对象视图(ROV)工具。 您可以参考 MCU+ SDK 中的此页面,以获得有关 ROV 的更多详细信息: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/ROV_INTRO_PAGE.html
此致
归档开发
您好、 Archit、
您是否有任何更新?
工业通信 SDK v9.2计划在下周发布。
谢谢。
约书亚
你好、Joshua、
TI.com 上提供的工业通信 SDK v9.2链接为: https://www.ti.com/tool/download/INDUSTRIAL-COMMUNICATIONS-SDK - AM243X
此致
归档开发
我有同样的问题,根据对象字典的限制。 我看到9.2已经发布了、但是您能解释一下在没有 define `EI_API_CIP_OBD_MAX`的情况下、使用哪个函数来设定代码中对象字典的限制吗? 我预计会有一个或类似的函数、但在 API 说明 https://software-dl.ti.com/processor-industrial-sw/esd/ind_comms_sdk/am243x/09_02_00_08/docs/am243x/ethernetip_adapter/modules.html 中找不到。
这不是必需的、因为所有内容都已分配堆?
感谢您的澄清。
你好,多米尼克
现在可以从 app.c 文件配置最大实例数。
请查看主函数并搜索"maxInstanceNum"配置参数。 代码应如下所示:
/* CIP configuration */ pCfg->cip.maxInstanceNum = 256; // Maximum number of instances defined as CIP object. Set not lower as 70.
上述配置参数由 appTask.c 文件中的"EI_API_CIP_node_new"函数调用使用。 相应的代码应如下所示:
// Create a CIP node. cipNode_s = EI_API_CIP_NODE_new(&pParam->cip);
此致
归档开发