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中进行任何与CAN相关的编程,但让我们看看我可能会回答哪些问题:

1)除了将PC连接到CANbus网络外,CAN-PC适配器还能做什么?

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

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总线error handling。

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

我不知道你的意思。 PDO或SDO取决于您想要的信息类型。

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

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

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

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