【问题标题】:CANopen PDO sample code for LPC11CxxLPC11Cxx 的 CANopen PDO 示例代码
【发布时间】:2015-01-20 05:49:41
【问题描述】:

我使用 LPC11Cxx 演示测试并理解了 SDO rx 和 tx。但是这个演示堆栈只有 SDO 函数和驱动程序API。我想为此实现 PDO。有哪些示例代码或实现步骤或功能?

我想定期从从节点向主节点发送 68(ADC 数据)字节的数据。我该怎么做?

对于上述任务,SDO 是否优于 PDO?我需要多少个 PDO 才能发送 64 字节的数据?如何设置 PDO 映射和参数?主节点和从节点有什么区别?如何与代码区分开来?

【问题讨论】:

    标签: pdo sample lpc canopen


    【解决方案1】:

    我不确定您的示例,但如果您可以通过 CAN 总线发送 SDO,那么您应该可以使用 PDO,尽管更复杂。

    一般步骤是: 1. 定义你的 PDO。您正在创建 PDO 与节点中的一个或多个数据对象之间的映射。例如,在我的系统上,我创建了一个 Transmit PDO,它设置电机位置和速度(两个对象),它响应另一个包含电机电流、位置和状态的 PDO(一个接收 PDO)。这是 PDO 的定义。

    1. 要使用您的 PDO,请使用您在步骤 1 中定义的 COBid 发送 PDO 消息。例如,我发送 PDO 0x201 以及位置和速度。节点将接收此信息并设置您为您定义的对象映射提供的值。请注意,该节点尚未对数据进行操作。

    2. 在您发送了所需数量的 PDO 之后(例如,我将用于位置/速度的 PDO 发送到总线上的 7 个节点以控制 7 个电机),然后您发送一个 SYNC。这会导致节点对您发送的 PDO 数据进行操作 - 即移动电机。

    3. 每个节点都会以一个传输 PDO 进行响应,以发回您定义的任何内容。我的节点发送位置、状态和当前。

    根据需要重复。

    Google "CANOpen momento dupin" 获取文档中的一些示例。您必须阅读节点上的文档以了解它们是如何定义的,或者阅读嵌入式 canopen 书中的章节。我有一些旧代码,您可以查看供应商提供给我的旧代码。这也可能是一个很好的来源。节点不必支持 PDO 映射,但我认为大多数都支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多