用于LPC11Cxx的CANopen PDO样本代码



我用LPC11Cxx演示测试并理解了SDO rx和tx。但是这个演示堆栈只有SDO函数和驱动程序API。我想实现同样的PDO。一些示例代码、实现步骤或函数是什么?

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

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

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

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

  1. 要使用您的PDO,请发送一条PDO消息,其中包含您在步骤1中定义的COBid。对我来说,我发送PDO 0x201与位置和速度。节点将接收此消息,并设置您为定义的对象映射提供的值。请注意,节点尚未对数据执行操作。

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

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

根据需要重复。

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

最新更新