Java和CANopen

13

背景

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

选择RJ45作为网络物理介质。我对CANopen和Java通信编程都很新。

如果我看起来是个门外汉,请原谅我。事实是,我已经阅读了很多资料,但我还不知道如何开始。

问题

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

12

这是很多问题。我从未在Java中执行过任何与CAN相关的编程,但让我们看看哪些问题我可能会回答:

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

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

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

不行。

3) 如果需要CAN-PC适配器,应该使用什么样的适配器? PCMCIA,并口,串口,usb等?

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

4) 如何开始编写用于监听/编写CANopen消息的java程序?

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

5) 应该使用哪些库?

可能是与您的CAN接口一起提供的库,至少对于基本的CAN部分。对于CANopen部分,有一些商业CANopen堆栈可用,甚至可能有一些免费的。我怀疑没有用Java编写的。

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

通常不需要。取决于您的操作系统和CAN接口型号。选择带有适合您操作系统的驱动程序的CAN接口。

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

CANopen堆栈应该在CANopen层面上处理这个问题。低层的CAN总线错误处理由您的接口负责。

8) 如何从CAN总线节点检索特定信息?

我不知道你这里指的是什么。如果你想要哪种类型的信息,可能需要使用PDOs或SDOs。

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

通常情况下,您不需要创建EDS文件,但出于文档目的可能会有用。对象字典是通过软件实现的。如果要使某些内容符合标准,对象字典的某些部分是强制性的。

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

我不建议这样做。一个有意义的总线模拟器可能比仅仅购买一个CAN适配器更昂贵。请注意,许多CAN适配器包含双接口,因此您可以仅使用适配器和几个终端电阻器在真实的CAN总线上进行通信测试。


EDS文件是符合CANopen标准的产品所必需的。它在配置、服务和系统设计工具中都是必须的。 - Simon Byholm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接