标签: canopen

如何编写简单的CANopen层

我们有一个机器人项目,电机控制器使用CANopen进行通信.我需要使用主微控制器与这些电机控制器进行通信.问题是我需要在这个微控制器中开发CANopen层,但我只知道如何在低级别(CAN)发送和接收.

我不太了解CANopen(PDO,SDO,Heartbeat,对象字典等).我试着阅读CiA规范,但它非常复杂.如果有人能指出我正确的方向,或者给我一个很好的教程来编写一个简单的CANopen层,我将不胜感激.

can-bus canopen

18
推荐指数
2
解决办法
3万
查看次数

Java和CANopen

背景

我需要在笔记本电脑上创建一个Java程序来接收/发送CANopen消息.

选择RJ45作为网络的物理介质.我是CANopen和Java通信编程的新手.

请原谅我,如果我似乎不知情.事实是,我已经阅读了很多,但我仍然不知道如何开始.

问题

  1. 除了将PC连接到CANbus网络外,CAN-PC适配器还能做什么?
  2. 是否可以在没有CAN-PC适配器的情况下将笔记本电脑连接到CANbus网络?
  3. 如果需要CAN-PC适配器,我应该使用哪种适配器?PCMCIA,并行,串口,USB等?
  4. 如何开始编写java程序来监听/写入CANopen消息?
  5. 我应该使用哪些库?
  6. 我需要创建自己的驱动程序吗?
  7. 我的程序应该处理心跳监控,错误检测等吗?或者这些由CAN-PC适配器处理?
  8. 如何从CANbus节点检索特定信息?
  9. 如何创建EDS文件和对象字典?每个节点都需要它们吗?
    1. 如何在不购买CAN硬件的情况下模拟CAN网络来测试我的Java程序?

java automation network-protocols can-bus canopen

12
推荐指数
1
解决办法
5902
查看次数

什么是PDO映射?

在阅读了几个CiA规范后,我仍然难以理解CANopen中的PDO映射,过程映像和过程数据交换.

我知道SDO用于预操作状态下的配置设置,并且具有协议开销(因为它可以传输超过8个字节的数据).

在运行状态下,PDO非常适合过程数据的输入和输出.PDO只能传输最多8个字节的数据.

存在11位的COB-ID,其具有功能代码和节点编号.由于节点号使用7位,因此我们最多可以有127个节点(对于CANopen 2.0A网络).

但是有四个TPDO和四个RPDO令我感到困惑.为什么需要多个TPDO和RPDO?在我读取设备配置文件的某个地方可以使用6000h到6FFFh的条目来描述设备参数和设备功能,并且在此范围内可以描述多达8个不同的设备.但是网络中可能有127个节点,那么这8个设备是什么?

network-protocols can-bus bus canopen

5
推荐指数
1
解决办法
9064
查看次数

适用于CANopen和Modbus的EDS

我正在开发的设备必须支持CANopen和Modbus(RTU和TCP)通信。是否有任何电子数据表格式(例如EDS或XDD)可用于定义两者?

我尝试使用几个工具(Vector CANeds和ODVA EZ-EDS)来生成一个与两者兼容的简单EDS文件,甚至依靠在文本编辑器中手动编辑文件,但是每个文件的输出看起来都差不多,但是彼此根本不相容。

理想情况下,我想使用CiA XDD格式,因为从我的桌面主应用程序中“反序列化”相对来说比较简单。但是,这似乎完全面向CANopen。

任何人都可以提供的任何信息,提示,技巧或指示,将不胜感激。

modbus canopen opc

4
推荐指数
1
解决办法
412
查看次数

.NET Micro Framework是否支持CAN总线?

我知道.NET Micro Framework支持I²C总线.是否有一些CANCANopen库?

如果没有,它是否支持CAN而不使用其他外围设备?我可以自己建立CAN支持吗?

.net embedded can-bus bus canopen

4
推荐指数
1
解决办法
3922
查看次数

通过EtherCAT(CoE)进行CANopen

  1. 当EtherCAT基于总线时,CANopen是点对点通信。点对点意味着将有节点地址。但这在EtherCAT中是多余的。所以我想知道如何在基于EtherCAT的CANopen中处理该节点地址字节。我尝试搜索信息,但找不到关于此的任何特定信息。
  2. 另外,我假设CANopen设备的循环数据和非循环数据都仅通过EtherCAT周期性发送,因为它是主站触发的循环传输协议。这基本上意味着我无法在事件触发时在EtherCAT上发送异步的,由事件触发的信息(这与基于CAN优先级的直觉相反,因为它们都具有相同的优先级)。如果我对此有误,请纠正我。还请告诉我如何使高优先级的字节比低优先级的字节更快到达(假设这两个字节是同时发生的,并假设在新帧开始时有带宽要发送这两个字节)。

canopen ethercat

3
推荐指数
1
解决办法
1593
查看次数

如何设置 PDO 映射?

基本了解CANopen网络中PDO映射的概念。它允许以小标题广播实时数据。

它是如何制作的?如何设置我的设备以了解如何发送/接收 PDO?我需要某种软件吗?

industrial can-bus canopen

3
推荐指数
1
解决办法
2396
查看次数

CAN 标识符和 COB-ID

你好,我是一名学习canopen的学生。Canopen中COB-ID和CAN标识符有什么关系?我在 CIA 主页上看到 COB-ID 不是 CAN ID,但我不明白。

例如,如果通过 CAN 总线传输 PDO,它将从 CANopen 帧转换为 CAN 帧。CAN标识符不会使用COB-ID的节点ID进行转换吗?此时,COB-ID 根据功能代码而变化,但更容易混淆的是 CAN 标识符每个设备只有一个。

总结我的问题,我想知道 CANopen 在通过 CAN 总线发送消息时如何转换标识符。

can-bus canopen

3
推荐指数
1
解决办法
1万
查看次数

如何编写CanOpen堆栈?

我有类似的问题.如何编写简单的CANopen层.我读了答案,但我必须自己编程一个CANopen层我无法获得商业广告.那么有没有写CANopen堆栈的基础知识(或者我不确定差异的层)?我甚至不知道从哪里开始..

如果需要这里有一些信息:

我的主设备是带有QNX的beagle bone black.QNX有一个通用的CAN库我认为但不是CANopen特有的.我的奴隶是一个军事化的无刷电机控制器.我正在用C++写作.我有一个关于我的系统的一般要求的文档.有2个RPDO和4个TPDO,传输是同步的,没有停止模式(因此没有心跳和节点保护)并且所有消息信息都被陈述(大小,格式,相关节点ID等)

c++ embedded can-bus qnx canopen

2
推荐指数
2
解决办法
3365
查看次数

CANopen PDO使用串行端口

我想了解CANopen协议.

目前,我没有任何CAN硬件或CANopen堆栈可供试验.

我想知道如何编写Java程序来简单地解释在RS-232端口接收的CANopen消息.

  • 是否有作为串口安装的CAN接口?
  • 我能写一个程序来处理CANopen消息吗?我只希望能够接收和解释消息.是否像为输入流创建缓冲区那样简单,然后根据SOF和EOF将传输分解为单独的消息?我怎么知道什么是SOF/EOF,因为它只有1位长?
  • 为什么CAN节点的PDO数量有限制?
  • 如何处理PDO以识别发送它的节点以及数据类型和值?PDO是标准CAN框架吗?

java serial-port can-bus canopen

2
推荐指数
1
解决办法
2694
查看次数

什么是 CANOpen 中的对象字典?

我将在 linux 中使用 CANOpen。在内核中,linux 有 socketcan,我有一些问题需要进一步实现。

1-) 对象字典的样子,是头文件还是 EDS 文件?

2-) 我需要对 pdo 和 sdo 配置使用对象字典吗?

3-) 我应该实现我的自定义 canopen 库,它只实现一些协议,还是使用像 canfestival 这样实现几乎所有协议和对象字典的库?

can-bus canopen

1
推荐指数
1
解决办法
2889
查看次数