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.
大家好、Steffen Graf、
我们继续通过连接来检查 IO-Link 主站(TIDA-010016)的行为
我们的 IO-Link 从站设计基于"IO-Link 从站 TI 参考设计"、如 TIDA-01335。
https://www.ti.com/tool/TIDA-010016
http://www.ti.com/tool/TIDA-01335
如前所述、我们可以成功地在 TeraTerm 控制台中找到 PD-Read 数据。
现在、我们尝试通过发送 PD 数据来检查 IO-Link 从设备上的 LED 闪烁行为。
因此、我们想知道在哪里以及如何修改 TIDA-010016演示程序、包括"ioLink_autosenTask.c"。
我们的试验如下:
-在 mst_dl_meh.c 中添加代码,如下所示(第377.371行)
- 在 ioLink_autosenTask.c 中添加如下所示的代码;(第524..539行)
-我们还在 ioLink_autosenTasl.h 中添加了如下代码(第46行、57..60行)
- TeraTerm 控制台日志在重新启动并运行后显示如下所示。
结果:
从"PD OUT"的日志中、似乎 PD-OUT=0x1 0x1被发送到我们的从器件
但该值(0x01 0x01)不会从的日志写入从器件(OD 读取、索引= 41)
因此,我们的从设备的 LED 没有亮起。
我们还通过 GUI 上的 TMG-Master 和 Slave 检查相同的行为。
www.tmgte.de/.../io-link-device-tool-standard-edition.html
我们发现了如下所示的正确行为。 (我们还在从板上发现"LED 已打开"。)
问题:
您是否有相同的经验?
-我们的代码修改是否正确?
您能告诉我们在哪里修改演示代码以将 PD-OUT 发送到从设备吗?
如果您使用可用的从设备检查 PD-OUT 发送行为、我们将不胜感激
并告诉我们建议的代码修改。
此致、
--
你好!
我已经使用设置测试了 PD 输出、但到目前为止、我还没有在软件中使用所有较高的层。
我建议您不要更改堆栈本身的任何内容、因此不要更改 mst_dl_meh.c
是否可以尝试直接在 MAL_PDCycle 和 ind 函数中设置 pdOut 值? 并在 更改 pdOut 值后调用 MAL_Control_req (port、0)。 这就是它对我的工作方式。
此致、
Steffen
您好!
非常感谢您的善意。
非常感谢您的帮助。
我想根据您的建议检查行为。
此致、
您好!
非常感谢您的善意。
非常感谢您的帮助。
我尝试检查行为以在 ioLink_autosenTask.c 中添加"ml_pdcycle_ind ()"和"ml_Control_req (port、0)"、如下所示
结果如下所示;
TIDA-010016演示代码中的某些程序经常将 PD-OUT 覆盖为0x99。
(这让我烦恼!)
问题:
您能否告诉我们建议的代码示例以发送 PD-OUT="0x01 0x01"、
即使某些程序将"0x99"覆盖到 PD-OUT、也是如此?
很抱歉打扰你。
如果您向我们发送成功的代码、包括"ioLink_autosenTask.c"、我们将不胜感激;
此致、
您好!
我将在星期二之前检查并向您发送一些代码示例。
此致、
Steffen
您好!
非常感谢您的善意。
非常感谢您的帮助。
我正在等待您的回答。
此致、
您好!
回到您的问题。 我尝试通过更改 mst_appl.c 文件中的 MAL_PDCycle 和 ind 函数来发送 PD 数据。
是否可以尝试用此代码替换现有的 MAL_PDCycle 和 ind 函数并检查发生了什么情况?
MPL_FUNC_PREFIX void MAL_PDCycle _ind (PortNumT 端口、BooleanT pdInvalidFlag、 UInteger8T * pdIn、UInteger8T pdInLength、 UInteger8T * pdOut、UInteger8T pdOutLength) { uint8_t i、len; IOLink_appDataFlags[port].pdFlag = true; IOLink_AppData[port].pd.invalidFlag = pdInvalidFlag; IOLink_AppData[port].pd.inLength = pdInLength; IOLink_AppData[port].PD.outLength = pdOutLength; Len =<IOLINK_MAX_APP_DATA_LEN?pdInLength:IOLINK_MAX_APP_DATA_LEN; 对于(i = 0;i < len;i++) { IOLink_AppData[port].pd.inData[i]= pdIn[i]; } pdOut[0]= 0x1; pdOut[1]= 0x1; MAL_Control_req (端口、0); IOLink_appDataCounts[port].pdCnt++; }
此致、
Steffen
您好!
非常感谢您的善意。
非常感谢您的帮助。
我们可以在我们的从板上找到"LED 开启"、并显示正确的 pdOut 消息。
谢谢!
此致、