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.

[参考译文] TIDA-010016:如何从 IO-Link 主站发送 PD-OUT 消息(TIDA-010016)

Guru**** 2008950 points
Other Parts Discussed in Thread: TIDA-010016, TIDA-01335
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/903535/tida-010016-how-to-send-pd-out-message-from-io-link-master-tida-010016

器件型号:TIDA-010016
主题中讨论的其他器件: TIDA-01335

大家好、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 消息。

    谢谢!

     

    此致、