12

背景

我需要在笔记本电脑上创建一个 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 程序?
4

1 回答 1

12

这是很多问题。我从来没有用 Java 做过任何与 CAN 相关的编程,但让我们看看我可能会回答哪些问题:

1)除了将PC连接到CANbus网络之外,CAN-PC适配器还有什么作用?

这主要取决于嵌入在适配器中的 CAN 控制器。但基本上它只处理低级的东西,如总线仲裁、错误处理、重传和消息缓冲。

2) 是否可以在没有 CAN-PC 适配器的情况下将笔记本电脑连接到 CANbus 网络?

不。

3) 如果需要 CAN-PC 适配器,我应该使用哪种适配器?PCMCIA、并行、串行、USB 等?

在笔记本电脑上?我会选择USB接口。我对 Kvaser 的界面有很好的经验。

4)我如何开始编写java程序来监听/编写CANopen消息?

取决于您的适配器的 API。API 很可能是基于 C 的,所以我至少会从一些简单的 C 测试程序开始。CAN 接口供应商可能有一些很好的例子。

5)我应该使用哪些库?

可能是随您的 CAN 接口提供的接口,至少对于基本 CAN 部分。对于 CANopen 部分,有一些商业 CANopen 堆栈可用,甚至可能是免费的。我怀疑是否有任何用 Java 编写的。如果您只是进行简单的通信,您也可以自己实现 CANopen 堆栈的必要部分。

6) 我需要创建自己的驱动程序吗?

一般没有。取决于您的操作系统和 CAN 接口模型。为您的操作系统选择带有驱动程序的 CAN 接口。

7)我的程序应该处理心跳监控/错误检测等吗?还是这些由 CAN-PC 适配器处理?

CANopen 堆栈应在 CANopen 级别处理该问题。低级 CAN 总线错误处理由您的接口负责。

8) 如何从 CANbus 节点检索特定信息?

我不知道你在这里是什么意思。PDO 或 SDO 取决于您想要的信息类型。

9) EDS 文件和对象字典是如何创建的?每个节点都需要它们吗?

您通常不需要创建 EDS 文件,但可能对文档有用。对象字典在软件中实现。如果使某些东西符合标准,则 OD 的某些部分是强制性的。

10) 如何在不购买 CAN 硬件的情况下模拟 CAN 网络来测试我的 java 程序?

我不会...开发一个有意义的总线模拟器可能比仅仅购买一个 CAN 适配器更昂贵。请注意,许多 CAN 适配器包含双接口,因此您可以在真正的 CAN 总线上进行通信测试,而只需要适配器和几个终端电阻器之外的硬件。

于 2009-01-08T23:27:19.130 回答