我使用LPC11Cxx演示测试并理解了SDO rx和tx。但是这个演示堆栈只有SDO函数和驱动程序API。我想为此实现PDO。一些示例代码或实现步骤或功能是什么?
我想定期从主节点向主节点发送68个(ADC数据)字节的数据。我怎么能这样做?
对于上述任务,SDO是否优于PDO?发送64字节数据需要多少个PDO?如何设置PDO映射和参数?主节点和从节点之间有什么区别?我如何区别于代码?
答案 0 :(得分:0)
我不确定你的例子,但是如果你可以通过CAN总线发送SDO,你应该可以使用PDO,虽然更复杂。
一般步骤如下: 1.定义您的PDO。您正在创建PDO与节点中的一个或多个数据对象之间的映射。例如,在我的系统上,我创建了一个发送PDO,用于设置电机位置和速度(两个对象),它们响应另一个包含电机电流,位置和状态的PDO(接收PDO)。这是PDO的定义。
要使用您的PDO,请发送一条PDO消息,其中包含您在步骤1中定义的COBid。我,我发送PDO 0x201的位置和速度。节点将接收此值并设置您为定义的对象映射提供的值。请注意,节点尚未对数据执行操作。
在您发送了所需数量的PDO之后(例如,我将位置/速度的PDO发送到总线上的7个节点以控制7个电机),然后发送SYNC。这会导致节点对您发送的PDO数据起作用 - 即移动电机。
每个节点都会使用传输PDO进行响应,以便发回您定义的任何内容。我的节点发送位置,状态和当前。
根据需要重复。
谷歌“CANOpen momento dupin”作为文档中的一些示例。您必须阅读节点上的文档以了解它们的定义方式,或嵌入式canopen手册中的章节。我有一些旧代码,你可以看一下供应商提供给我的代码。这也许是一个很好的来源。节点不必支持PDO映射,但我认为大多数都是。