0
  1. CAN接口卡是否可能安装为COM端口?

  2. 如何分解要作为单独帧发送的消息?将接收到的多个帧中的数据组合成一条消息怎么样?这是一个有效的担忧吗?

  3. 什么是 CANopen 堆栈?如果我已经有一个用于与串行端口通信的 API,我可以让我的程序在没有 CANopen 堆栈的情况下读取/发送 CANopen 消息吗?我的程序到底要做什么?

  4. 在软件中实现对象字典(OD)的理想/正确方法是什么?

(现状:我必须编写一个Java程序来解释CANopen消息。由于某些情况,我无法接触CAN硬件。)

(这是我上周在Java 和 CANopen上发布的一系列 Stack Overflow 问题的延续。)

4

2 回答 2

2
  1. 这取决于你的接口卡。但最有可能的是,它不是 COM 端口,但您会得到一个 DLL 文件,该文件具有访问卡的导出功能(大多数可用的 CAN 接口通过 USB 端口连接到您的 PC)。但不要担心:即使它不是官方标准,大多数 DLL 文件都使用相同的功能,因此您可以毫无问题地与其他制造商的 CAN 接口进行交换。

  2. 通过 CAN 总线发送如此多的数据以致您必须将它们分成多个帧是非常罕见的。但如果你绝对必须这样做,那么你必须自己做。

  3. CANopen 堆栈是一个库,它提供更高级别的功能供您使用。它负责处理 CANopen 所需的一切(例如,心跳),因此您不必自己动手。一个好的堆栈还可以处理多个帧 (2)。不幸的是,这样的堆栈并不便宜,但恕我直言,它们是值得的。

  4. 大多数实现使用 ROM 或 RAM 中的结构,具体取决于是否可以修改 OD。但是一个好的 CANopen 协议栈也已经为您解决了这个问题。

于 2009-01-11T08:22:10.573 回答
0

3) 虽然商业 CANopen 堆栈肯定是一个好主意,但仍然可以在不使用 CANopen 消息的情况下读取/发送消息。

我们不知道您申请的目的是什么。但是,如果没有 CANopen 堆栈,您可能会很好的一个例子是,如果您已经有一个带有主节点和从节点的功能正常的 CANopen 总线,并且您只想监听特定消息。另一个示例可能是,如果您正在编写一个小型配置或测试实用程序,其中使用了一组小型且定义明确的消息。在这种情况下,一个成熟的商业 CANopen 堆栈可能会显得有些矫枉过正。

于 2009-01-13T15:08:16.023 回答